#pragma once

#include <vector>
#include <iostream>

struct CubesSize
{
    CubesSize(int r = 0, int g = 0, int b = 0):
        red{r}, blue{b}, green{g} {}

    int red;
    int green;
    int blue;
};

class Game
{
public:
    Game(const std::string& message);

public:
    int id() const noexcept
    { return this->_id; }

    const std::vector<CubesSize>& sets() const noexcept
    { return this->_sets; }

private:
    int _id;
    std::vector<CubesSize> _sets;
};

std::ostream& operator << (std::ostream& out, const Game& game);
std::ostream& operator << (std::ostream& out, const CubesSize& size);
CubesSize operator + (const CubesSize& size1, const CubesSize& size2);
CubesSize operator - (const CubesSize& size1, const CubesSize& size2);
bool operator == (const CubesSize& size1, const CubesSize& size2);

